#include<iostream>
#include<vector>
#include<queue> 
using namespace std;
const int N=1e5+10,M=1e3+10;
int n,m;
typedef pair<int,int> PII;
vector<PII> edges[N];
int in[N],f[N];

int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		in[v]++;
		edges[u].push_back({v,w});
	}
	//先把所有其他的非1源头都断掉
	queue<int> q;
	for(int i=2;i<=n;i++)
	{
		if(in[i]==0) q.push(i);
		f[i]=-1e9;
	} 
		while(q.size())
		{
			auto x=q.front();q.pop();
			for(auto e:edges[x])
			{
				int v=e.first;int w=e.second;
				in[v]--;
				if(in[v]==0) q.push(v);
			}
		} 
	//此时只有1这个源头
	q.push(1);
	while(q.size())
	{
		auto x=q.front();q.pop();
		for(auto e:edges[x])
		{
			int v=e.first;int w=e.second;
			in[v]--;
			f[v]=max(f[v],f[x]+w);
			if(in[v]==0) q.push(v);
		}
	} 
	if(f[n]==-1e9)
	{
		cout<<-1<<endl;
	}
	else cout<<f[n]<<endl;
	return 0;
}